package com.bbva.log4j.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;

import com.bbva.common.listener.SpringInit.SpringInit;
import com.bbva.persistencia.generica.dao.GenericDao;
import com.bbva.persistencia.generica.modelo.Direccion;
import com.bbva.persistencia.generica.modelo.Entidad;
import com.bbva.persistencia.generica.modelo.Usuarios;
import com.bbva.persistencia.generica.util.Busqueda;

@ManagedBean(name = "tblMB")
@SessionScoped
public class TablitasController implements Serializable {


	private static final long serialVersionUID = 1L;
	
	private List<Entidad> lstTablita01;
	private List<Direccion> lstDireccionLst;
	private List<Usuarios> lstUsuarios;
	private int iCantidadTbl01, iCantidadDireccion;
	
	public TablitasController() {
		lstTablita01 = new ArrayList<Entidad>();

	}

	@SuppressWarnings({ "deprecation", "unchecked" })
	public void buscarEntidadRelacional(){
		
		    SpringInit.openSession();
		    
		        GenericDao<Usuarios, Integer> entidadDAO = (GenericDao<Usuarios, Integer>) SpringInit.getApplicationContext().getBean("genericoDao");
		      
		    	Set<Direccion> lstDireccion= new HashSet<Direccion>();;
			  
			    Busqueda filtro = Busqueda.forClass(Usuarios.class) ;
			    filtro.add(Expression.like("idusuario", 1));
			    
			    lstUsuarios = entidadDAO.buscarDinamico(filtro);
			    lstDireccionLst=new ArrayList<Direccion>();
			    for (Usuarios usu : lstUsuarios) {
			    	 lstDireccion= usu.getDireccions();
			    	 iCantidadDireccion =lstDireccion.size();
			
				}
			   SpringInit.closeSession();
			
	  }
	
	@SuppressWarnings("unchecked")
	public void buscarItemsTablitaProcedimientos() {
		GenericDao<Entidad, Integer> repl = (GenericDao<Entidad, Integer>) SpringInit.getApplicationContext().getBean("genericoDao");

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("an_id_key", new Integer(5));
		map.put("an_id_value", new String("valor 05"));

		try {
			lstTablita01 = (List<Entidad>) repl.getCallProcedimiento("Ejemplo.psp_procedimiento", map);
			iCantidadTbl01 =lstTablita01.size();
	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("unchecked")
	public void buscarEntidadSimple(){
		  lstTablita01 = new ArrayList<Entidad>();
		  GenericDao<Entidad, Integer> entidadDAO = (GenericDao<Entidad, Integer>) SpringInit.getApplicationContext().getBean("genericoDao");
		 
			   Busqueda filtro = Busqueda.forClass(Entidad.class) ;
			   lstTablita01 = entidadDAO.buscarDinamico(filtro);
			   iCantidadTbl01 =lstTablita01.size();
			
	}
	
	public List<Entidad> getLstTablita01() {
		return lstTablita01;
	}

	public void setLstTablita01(List<Entidad> lstTablita01) {
		this.lstTablita01 = lstTablita01;
	}

	public int getiCantidadTbl01() {
		return iCantidadTbl01;
	}

	public void setiCantidadTbl01(int iCantidadTbl01) {
		this.iCantidadTbl01 = iCantidadTbl01;
	}

	
	public List<Usuarios> getLstUsuarios() {
		return lstUsuarios;
	}

	public void setLstUsuarios(List<Usuarios> lstUsuarios) {
		this.lstUsuarios = lstUsuarios;
	}

	public List<Direccion> getLstDireccionLst() {
		return lstDireccionLst;
	}

	public void setLstDireccionLst(List<Direccion> lstDireccionLst) {
		this.lstDireccionLst = lstDireccionLst;
	}

	public int getiCantidadDireccion() {
		return iCantidadDireccion;
	}

	public void setiCantidadDireccion(int iCantidadDireccion) {
		this.iCantidadDireccion = iCantidadDireccion;
	}


	
	
	
}
